/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package cz.muni.fi.pb138.xml.wrda.dao;

import cz.muni.fi.pb138.xml.wrda.core.Wsdl;
import java.util.List;

/**
 *
 * @author N
 */
public interface WsdlDao {
    
    /**
     * Saves Wsdl entry to database
     * 
     * @param data class with wsdl data and metadata
     */
    void save(Wsdl data);

    /**
     * delete Wsdl entry from database
     * 
     * @param data class with wsdl data and metadata
     */
    void delete(Wsdl data);

    /**
     * Return all entries from database
     * 
     * @return list of Wsdl entries
     */
    List<Wsdl> getAllEntries();

    /**
     * Print all entries in database to console
     */
    public void printAll();

    /**
     * Return all entries from database using dinstinc names
     * 
     * @return list of entries
     */
    public Object getAllEntriesDistinctNames();

    /**
     * Deletes all entries od specified document
     * 
     * @param fileName name of Wsdl document
     */
    public void deleteAllEntryByName(String fileName);

    /**
     * Deletes all entries od specified document
     * 
     * @param timeStamp timestamp of document
     */
    public void deleteEntryByTimeStamp(String timeStamp);

    /**
     * Return entries from database using filename and timestamp
     * 
     * @param name name of Wsdl document
     * @param timeStamp timestamp of document
     * @return Wsdl entry
     */
    public Object getEntryByFileNameAndTimeStamp(String fileName, String timeStamp);

    /**
     * Return all entries from database using filename
     * 
     * @param fileName name of Wsdl document
     * @return Wsdl entry
     */
    public Object getAllEntriesByFileName(String fileName);
    
    /**
     * Get entry using timestamp
     * 
     * @param timeStamp timestamp of document
     * @return Wsdl entry
     */
    public Wsdl getEntryByTimestamp(String timeStamp);
    
    
}
